This invention relates to automatic call distribution systems and to computer-telephony integration therewith.
Automatic call distribution (ACD) systems distribute calls for servicing in a call center among a group of agents, based on various criteria such as availability and skills of the agents and needs of the callers. An ACD system detects and answers incoming calls. It looks in its memory for instructions on what to do with the calls. Based on these instructions it enqueues each call in a call queue that corresponds to the call""s type and gives the calls some xe2x80x9cin-queuexe2x80x9d treatment, such as messages indicating that someone will answer the call shortly and how long the caller is likely to wait for an answer, and/or connects the calls to a voice-response unit to collect more information about the calls. When a call reaches the head of its call queue and an agent who services this type of calls becomes available, the ACD system connects the call to that agent for servicing. Many sophisticated ACD systems provide a variety of additional features as well.
Computer-telephony integration (CTI) applies additional computer intelligence to the making, receiving, and managing of calls. CTI involves connecting a host (adjunct) computer to a telephone switch, such as an ACD or a private branch exchange, and having the computer issue commands to the switch to distribute the calls to the agents. At the same time, the computer usually retrieves stored data relating to the calls (or, more precisely, to the callers) and displays the retrieved data on display screens of the agents to whom the calls are sent for servicing. In a multi-media call center that also services contacts (communications) other than calls, such as e-mail, Internet messages, faxes, etc., the host computer manages these contacts akin to how the ACD system manages calls, and integrates management and servicing of calls with the management and servicing of the other contacts.
CTI systems usually do not have the same high-reliability characteristics as have been built over the decades into ACD systems. Customers desire to obtain the enhanced services of a CTI system, but are often unwilling to do so unless there is a robust mechanism for handling calls when the CTI service is lost. When the CTI service is lost (failover), there must be an alternative mechanism in place to process calls and to assign calls to agents for servicing calls. Also, when the CTI service is restored (recovery), there must be a mechanism for transitioning back to CTI control of calls. Both of these transitions must be handled automatically by the system without disrupting the processing and servicing of calls and without losing calls.
In the prior art, failover and recovery mechanisms of CTI systems are usually inadequate. Failover is sometimes handled reasonably well, but it is typical that recovery of CTI services cannot be achieved while the system is active. Usually, it is necessary to wait until a quiet period when there are no calls in the system before CTI services can be restored. This may mean waiting until the end of the business day before full CTI service can be restored.
This invention is directed to solving these and other problems and disadvantages of the prior art. Illustratively according to the invention, calls are enqueued as ACD calls to ACD call queues and assigned to ACD agents for servicing under control of a host processor (e.g., a CTI host) during normal CTI operation. The host processor may simultaneously be controlling other, non-call, contacts as well. The ACD infrastructure is thus preserved, and it provides the basis for uninterrupted automatic call distribution during failure and recovery of CTI. When loss of host processor control occurs, the ACD system flags all existing and new calls as being under ACD system control, and the ACD system assumes control of existing and new calls, including of their enqueuing and/or assignment to agents. In effect, the agents are now under control of the ACD system, and the host processor has ceased assigning work to those agents. When host processor control ability is restored, the ACD system stops flagging new calls and the host processor resumes control of enqueuing of the new calls, but the ACD system retains control of assignment of existing (presently-enqueued) calls to agents, and host processor control of call assignment is restored one call queue at a time, and only when all of the existing (flagged) calls are removed from that call queue by the ACD system. Only when control of all call queues that are served by an individual agent has been returned to the host processor does the host processor resume control over that agent, including assigning of calls (and other work) to that agent.
Generally according to one aspect of the invention, a method of operating a contact center comprising an ACD system and a host processor that is separate from the ACD system but that controls enqueuing of calls in call queues of the ACD system and controls assigning of the calls (and perhaps even of other work) to agents for servicing, comprises the following functions. In response to the host processor losing the control of the enqueuing and the assigning, the ACD system assumes control of the enqueuing and the assigning. In response to the host processor regaining the ability to control the enqueuing and the assigning, control of the enqueing returns to the host processor, but the ACD system continues to control the assigning from each of the call queues until the call queue is emptied of at least calls that were enqueued therein under the control of the ACD system. Preferably, the ACD system continues to control the assigning from each of the call queues until that call queue is emptied of all calls that were enqueued therein when the host processor regained the control ability. Thereupon the control of the assigning from that call queue is returned to the host processor. The invention may be applied to other, non-call, contacts and to other, non-agent, resources for servicing contacts equally well.
Generally according to another aspect of the invention, a method for controlling enqueuing of calls in call queues of an ACD system, and for assigning the enqueued calls (and perhaps other work as well) to agents for servicing, by a host processor that is separate from the ACD system in a call center wherein the ACD system is capable of enqueuing calls in the call queues and assigning the enqueued calls to the agents in an absence of the control by the host processor, comprises the following functions. The host processor controls the enqueuing and the assigning of the calls in the call queues. When the host processor loses and subsequently regains the ability to control the enqueuing and the assigning, the host processor resumes control of the enqueuing of the calls upon regaining the control ability, but resumes the control of the assigning of the enqueued calls from each of the call queues only upon the call queue being emptied of at least calls that were enqueued therein while the host processor lost control of the enqueuing and assigning. Preferably, the host processor resumes the control of the assigning from each of the call queues only upon the call queue being emptied of all calls that were enqueued therein when the host processor resumed control of the enqueing. Also, each agent services calls from at least one of the queues, and the host processor resumes assigning calls (and perhaps other work as well) to each agent only when the host processor has resumed the control of the assigning from every call queue that is serviced by that agent. The invention may be applied to other, non-call, contacts and to other, non-agent, resources for servicing contacts equally well.
Advantageously according to the invention, when loss of CTI service (host processor control) is detected, the ACD system assumes responsibility for controlling calls that are in queue and also for any newly-arriving calls. The calls do not need to be moved, and the agents do not need to log into other skills. Instead, the ACD simply assumes control of the existing call queues. When CTI service is restored, the system goes into xe2x80x9crecoveryxe2x80x9d mode. The CTI system does not immediately assume control of call assignment from the call queues, because there are still many calls in the contact center that are unknown to the host processor. Instead, it allows the ACD system to continue to assign calls to agents until there are no calls in the queue that were enqueued by the ACD system while CTI service was lost. Any new calls are enqueued in the same queues and will eventually be delivered by the host processor when it resumes control of those call queues. When all calls enqueued by the ACD system have been serviced from the call queue, the ACD system stops assigning calls to agents from this call queue and notifies the CTI system that it may now resume control of call assignment from this call queue. Only when control of all of the call queues that are serviced by an agent have been returned to host processor control will the host processor resume assignment of calls (and perhaps other work as well) to that agent. The same benefits may likewise be obtained for other, non-call, contacts and other, non-agent, resources for servicing contacts.
While the invention has been characterized in terms of a method, it also encompasses apparatus that performs the method. The apparatus preferably includes an effecterxe2x80x94any entity that effects the corresponding step, unlike a meansxe2x80x94for each step. The invention further encompasses any computer-readable medium containing instructions which, when executed in a computer, cause the computer to perform the method steps.
These and other features and advantages of the present invention will become more apparent from the following description of an illustrative embodiment of the invention considered together with the drawing.